/*================================================================
*   File Name：common.c
*   Mail: a1277992967@163.com 
*   blog: http://www.ycst.club/suggest/ 
*   Author：ycst
*   Created Time：2022年08月09日 星期二 18时30分50秒
*   Describe：
*
================================================================*/

#include "../include/common.h"

int get_seq(char *recv_buf){
	if(recv_buf == NULL)	return -1;
	Datapack *data1 = (Datapack *)recv_buf;
	return data1->seq;
}
int get_ack(char *recv_buf){
	if(recv_buf == NULL)	return -1;
	Datapack *data1 = (Datapack *)recv_buf;
	return data1->ack;
}
int get_check(char *recv_buf){
	if(recv_buf == NULL)	return -1;
	Datapack *data1 = (Datapack *)recv_buf;
	return data1->check;
}
int get_data(char *recv_buf, char *buf){
	if(recv_buf == NULL || buf == NULL)	return -1;
	Datapack *data1 = (Datapack *)recv_buf;
	strcpy(buf, data1->my_data);
}

/*================================================================
*   Describe : 奇偶校验
------------------------------------------------------------------
*	parameter	:
*	@Datapack data	:	要进行校验的数据	
*	@return		:	奇偶校验值
================================================================*/
int Parity_Check(char *recv_buf){
	if(recv_buf == NULL)	return -1;
	Datapack *data1 = (Datapack *)recv_buf;
	int bit0 = 0, bit1 = 0, bit2 = 0, bit3 = 0, sum = 0;
	bit0 = data1->seq & 0x01;
	bit1 = data1->ack & 0x01;
	bit2 = data1->check & 0x01;
	bit3 = data1->my_data[0] & 0x01;
	sum = (bit0 + bit1 + bit2 + bit3) % 2;
	if(sum  == (data1->check & 0x08) >> 3)	return RIGHT;
	return ERROR;
}

/*================================================================
*   Describe : 奇偶生成
------------------------------------------------------------------
*	parameter	:
*	@Datapack data	:	要进行校验的数据	
*	@return		:	奇偶校验值
================================================================*/
int Parity_Create(Datapack data){
	int bit0 = 0, bit1 = 0, bit2 = 0, bit3 = 0, sum = 0;
	bit0 = data.seq & 0x01;
	bit1 = data.ack & 0x01;
	bit2 = data.check & 0x01;
	bit3 = data.my_data[0] & 0x01;
	sum = (bit0 + bit1 + bit2 + bit3) % 2;
	return sum;
}
